864 words
原题链接1211. 蚂蚁感冒 题目难度:简单 题目来源:第五届蓝桥杯省赛C++ A/B组 题目描述长 100 厘米的细长直杆子上有 n 只蚂蚁。 它们的头有的朝左,有的朝右。 每只蚂蚁都只能沿着杆子向前爬,速度是 1 厘米/秒。 当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行。 这些蚂蚁中,有 1 只蚂蚁感冒了。 并且在和其它蚂蚁碰面时,会把感冒传染给碰到的蚂蚁。 请你计算,当所有蚂蚁都爬离杆子时,有多少只蚂蚁患上了感冒。 输入格式第一行输入一个整数 n, 表示蚂蚁的总数。 接着的一行是 n 个用空格分开的整数 $X_i$, $X_i$ 的绝对值表示蚂蚁离开杆子左边端点的距离。 正值表示头朝右,负值表示头朝左,数据中不会出现 0 值,也不会出现两只蚂蚁占用同一位置。 其中,第一个数据代表的蚂蚁感冒了。 输出格式输出1个整数,表示最后感冒蚂蚁的数目。 数据范围$1<n<50$,$0 < |X_i| < 100$ 输入样例1:1235 -2 8 输出样例1:11 输入样例2:125-10 8 -20 12 25 输出样例2:1...
382 words
原题链接1216. 饮料换购 题目难度:简单 题目来源:第六届蓝桥杯省赛C++ A/C组,第六届蓝桥杯省赛Java B组 题目描述乐羊羊饮料厂正在举办一次促销优惠活动。乐羊羊C型饮料,凭3个瓶盖可以再换一瓶C型饮料,并且可以一直循环下去(但不允许暂借或赊账)。 请你计算一下,如果小明不浪费瓶盖,尽量地参加活动,那么,对于他初始买入的 n 瓶饮料,最后他一共能喝到多少瓶饮料。 输入格式输入一个整数 n,表示初始买入的饮料数量。 输出格式输出一个整数,表示一共能够喝到的饮料数量。 数据范围0 < n < 10000 输入样例:1100 输出样例:1149 题目分析这道题其实就是一种小学数学题目,三个瓶盖换一个饮料,问最多可以喝多少瓶饮料 这种简单的题目就是模拟他兑换的过程 假设我们一开始有n瓶,那么结果就先有n,然后又有了n个瓶盖,那么当n大于等于3的时候就可以一直换,换的瓶数除3下取整,盖子数量就是n除3下取整再加上n除3的余数 示例代码123456789101112131415#include<iostream>using namespa...
964 words
原题链接1205. 买不到的数目 题目难度:简单 题目来源:第四届蓝桥杯省赛C++ A组,第四届蓝桥杯省赛Java C组 题目描述小明开了一家糖果店。 他别出心裁:把水果糖包成4颗一包和7颗一包的两种。 糖果不能拆包卖。 小朋友来买糖的时候,他就用这两种包装来组合。 当然有些糖果数目是无法组合出来的,比如要买 10 颗糖。 你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是17。 大于17的任何数字都可以用4和7组合出来。 本题的要求就是在已知两个包装的数量时,求最大不能组合出的数字。 输入格式两个正整数 n,m,表示每种包装中糖的颗数。 输出格式一个正整数,表示最大不能买到的糖数。 数据范围2≤n,m≤1000,保证数据一定有解。 输入样例:14 7 输出样例:117 题目分析这道题其实就是非常经典的一道数学题目,题目意思也很简单,就是给两个数,问最大的不能凑出来的数是多少 假设我们不知道这个数学定理,如何尽力去分析呢,首先假设这两个数字是p和q,他们的最大公因数是d,那么对于大于p和q,且因数中没有d的数字是一定凑不出来的,反过来,那么只要他们的最大公因数...
820 words
原题链接730. 机器人跳跃问题 题目难度:中等 题目来源:笔试题 题目描述机器人正在玩一个古老的基于 DOS 的游戏。 游戏中有 N+1 座建筑——从 0 到 N 编号,从左到右排列。 编号为 0 的建筑高度为 0 个单位,编号为 iii 的建筑高度为 $H(i)$ 个单位。 起初,机器人在编号为 0 的建筑处。 每一步,它跳到下一个(右边)建筑。 假设机器人在第 k 个建筑,且它现在的能量值是 EEE,下一步它将跳到第 $k+1$ 个建筑。 如果 $H(k+1)>E$,那么机器人就失去 $H(k+1)-E$ 的能量值,否则它将得到 $E-H(k+1)$ 的能量值。 游戏目标是到达第 N 个建筑,在这个过程中能量值不能为负数个单位。 现在的问题是机器人至少以多少能量值开始游戏,才可以保证成功完成游戏? 输入格式第一行输入整数 N。 第二行是 N 个空格分隔的整数,$H(1),H(2),…,H(N)$ 代表建筑物的高度。 输出格式输出一个整数,表示所需的最少单位的初始能量值上取整后的结果。 数据范围$1 \le N,H(i) \le 10^5,$ 输入样例1:1253 4 ...
1.1k words
原题链接1230. K倍区间 题目难度:中等 题目来源:第八届蓝桥杯省赛C++ B组,第八届蓝桥杯省赛Java B/C组 题目描述给定一个长度为 NNN 的数列,$A_1, A_2, … A_N$,如果其中一段连续的子序列 $A_i, A_{i+1}, … A_j$ 之和是 K 的倍数,我们就称这个区间 $[i, j]$ 是 K 倍区间。 你能求出数列中总共有多少个 K 倍区间吗? 输入格式第一行包含两个整数 N 和 K。 以下 NNN 行每行包含一个整数 $A_i$。 输出格式输出一个整数,代表 K 倍区间的数目。 数据范围$1 \le N, K \le 100000$,$1 \le A_i \le 100000$ 输入样例:1234565 212345 输出样例:16 题目分析题目意思十分清楚,就是给一个静态数组,问其中有多少个连续子数组的和是K的倍数 这里我们观察数据范围,大概采用的时间复杂度要小于$O(n\log n)$ 我们如果用最暴力的做法,枚举所有方案,对于枚举来说最重要的就是如何能够不重不漏的枚举出所有方案 对于这个题而言,就是枚举左端点和右端点...
1.1k words
原题链接1221. 四平方和 题目难度:简单 题目来源:第七届蓝桥杯省赛C++ A/B组,第七届蓝桥杯省赛Java B/C组 题目描述四平方和定理,又称为拉格朗日定理: 每个正整数都可以表示为至多 4 个正整数的平方和。 如果把 0 包括进去,就正好可以表示为 4 个数的平方和。 比如: $5 = 0^2 + 0^2 + 1^2 + 2^2$$7 = 1^2 + 1^2 + 1^2 + 2^2$ 对于一个给定的正整数,可能存在多种平方和的表示法。 要求你对 4 个数排序: $0 \le a \le b \le c \le d$ 并对所有的可能表示法按 a,b,c,d 为联合主键升序排列,最后输出第一个表示法。 输入格式输入一个正整数 N。 输出格式输出4个非负整数,按从小到大排序,中间用空格分开。 数据范围$0 < N < 5 * 10^6$ 输入样例:15 输出样例:10 0 1 2 题目分析这道题的内容比较简洁,就是将一个整数分成四个整数的平方和的形式,有很多做法 我们可以大概分析一下,因为N是分成一个平方的,而$\...
789 words
原题链接1227. 分巧克力 题目难度:简单 题目来源:第八届蓝桥杯省赛C++ A/B组,第八届蓝桥杯省赛Java A/B/C组 题目描述儿童节那天有 K 位小朋友到小明家做客。 小明拿出了珍藏的巧克力招待小朋友们。 小明一共有 N 块巧克力,其中第 i 块是 $H_i \times W_i$ 的方格组成的长方形。 为了公平起见,小明需要从这 N 块巧克力中切出 K 块巧克力分给小朋友们。 切出的巧克力需要满足: 形状是正方形,边长是整数 大小相同 例如一块 $6 \times 5$ 的巧克力可以切出 6 块 $2 \times 2$ 的巧克力或者 2 块 $3 \times 3$ 的巧克力。 当然小朋友们都希望得到的巧克力尽可能大,你能帮小明计算出最大的边长是多少么? 输入格式第一行包含两个整数 N 和 K。 以下 NN 行每行包含两个整数 $H_i$ 和 $W_i$。 输入保证每位小朋友至少能获得一块 $1 \times 1$ 的巧克力。 输出格式输出切出的正方形巧克力最大可能的边长。 数据范围$1 \le N,K \le 10^5$,$1 ...
926 words
原题链接99. 激光炸弹 题目难度:简单 题目来源:《算法竞赛进阶指南》, HNOI2003 题目描述地图上有 N 个目标,用整数 $X_{i}, Y_{i}$ 表示目标在地图上的位置,每个目标都有一个价值 $W_i$。 注意:不同目标可能在同一位置。 现在有一种新型的激光炸弹,可以摧毁一个包含$R \times R$ 个位置的正方形内的所有目标。 激光炸弹的投放是通过卫星定位的,但其有一个缺点,就是其爆炸范围,即那个正方形的边必须和 $x,y$ 轴平行。 求一颗炸弹最多能炸掉地图上总价值为多少的目标。 输入格式第一行输入正整数 N 和 R,分别代表地图上的目标数目和正方形包含的横纵位置数量,数据用空格隔开。 接下来 N 行,每行输入一组数据,每组数据包括三个整数 $X_{i}, Y_{i}, W_{i}$,分别代表目标的 x 坐标,y 坐标和价值,数据用空格隔开。 输出格式输出一个正整数,代表一颗炸弹最多能炸掉地图上目标的总价值数目。 数据范围$0 \le R \le 10^9 $$0 < N \le 10000$,$0 \le X_{i}, Y_{i} \le 5000...